package cl.utfsm.isw.mecanico.servicio.dao;


import java.io.Reader;
import java.util.HashMap;
import java.util.List;

import cl.utfsm.isw.mecanico.servicio.to.ServicioTO;
import cl.utfsm.isw.mecanico.vehiculo.to.VehiculoTO;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

/**s
 * @author Cristian Arredondo
 *
 */
public class ServicioDAO {
	
	
	private static String SQLMAP = "tablas/servicio/sqlMapServicio.xml";
	
	
	/**
	 * 
	 * @param patente
	 * @return
	 * @throws Exception
	 */
	public ServicioTO consultarServicio(String nombre) throws Exception{
		
		System.out.println("[ServicioDAO][consultarServicio] en ServicioDAO");
		ServicioTO servicios = null;
		
		try {
		
			HashMap parametros = new HashMap();
			parametros.put("nombre", nombre);
			
			System.out.println("[ServicioDAO][consultarServicio] parametros: "+parametros.toString());
			String resource = SQLMAP;
			Reader reader = Resources.getResourceAsReader(resource);
			SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
			System.out.println("[ServicioDAO][consultarServicio] antes de consultar.");
			List resultado = sqlMap.queryForList("consultarServicio",parametros);
			
			System.out.println("[ServicioDAO][consultarServicio] Salida: "+ resultado.toString());
			
			if (resultado != null) {            
	            if (resultado.size() > 0) {
	            	System.out.println("[ServicioDAO][consultarServicio] dentro de if");
	            	servicios = new ServicioTO();
	            	System.out.println("[ServicioDAO][consultarServicio] despues de crear vehiculo");
	                HashMap salida = (HashMap) resultado.get(0);
	                System.out.println("[ServicioDAO][consultarServicio] despues de casteo");
	                servicios.setDescripcion((String)salida.get("descripcion"));
	                servicios.setNombre((String) salida.get("nombre"));

	            }
			}		
			System.out.println("[ServicioDAO][consultarServicio] Retorno: "+ servicios.toString());		
			return servicios;
		}catch(Exception e){
			System.out.println("[ServicioDAO][consultarServicio] ERROR "+e.getStackTrace());
			return null;
		}
	}
	


	/**
	 * 
	 * @param servicioIngreso
	 * @return
	 * @throws Exception
	 */
	public boolean ingresarServicio(ServicioTO servicioIngreso) throws Exception{
		
		System.out.println("[ServicioDAO][ingresarServicio] en ServicioDAO");
		try{
			HashMap parametros = new HashMap();
			parametros.put("descripcion", servicioIngreso.getDescripcion());
			parametros.put("nombre", servicioIngreso.getNombre());
						
			
			System.out.println("[ServicioDAO][ingresarServicio] parametros: "+parametros.toString());
			String resource = SQLMAP;
			Reader reader = Resources.getResourceAsReader(resource);
			SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
			
			List resultado = sqlMap.queryForList("ingresarServicio", parametros);
			
		}catch(Exception e){
			System.out.println("[ServicioDAO][ingresarServicio] ERROR : "+e.getStackTrace());
			throw e;
		}
		
		
		System.out.println("[ingresarServicio] datos : "+servicioIngreso.toString());
		
		return true;
	}
	
	
	/**
	 * 
	 * @param servicioElimina
	 * @return
	 * @throws Exception
	 */
	public boolean eliminarServicio(ServicioTO servicioElimina) throws Exception{
		
		System.out.println("[ServicioDAO][eliminarServicio] en ServicioDAO");
		try{
			HashMap parametros = new HashMap();
			parametros.put("nombre", servicioElimina.getNombre());
						
			
			System.out.println("[ServicioDAO][eliminarServicio] parametros: "+parametros.toString());
			String resource = SQLMAP;
			Reader reader = Resources.getResourceAsReader(resource);
			SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
			
			List resultado = sqlMap.queryForList("eliminarServicio", parametros);
			
		}catch(Exception e){
			System.out.println("[ServicioDAO][eliminarServicio] ERROR : "+e.getStackTrace());
			throw e;
		}
		
		
		System.out.println("[eliminarServicio] datos : "+servicioElimina.toString());
		
		return true;
	}
	
	
	/**
	 * 
	 * @param servicioModificar
	 * @return
	 * @throws Exception
	 */
	public boolean modificarServicio(ServicioTO servicioModificar) throws Exception{
		
		System.out.println("[ServicioDAO][modificarServicio] en ServicioDAO");
		try{
			HashMap parametros = new HashMap();
			
			parametros.put("descripcion", servicioModificar.getDescripcion());
			parametros.put("nombre", servicioModificar.getNombre());
			
			
			System.out.println("[ServicioDAO][modificarServicio] parametros: "+parametros.toString());
			String resource = SQLMAP;
			Reader reader = Resources.getResourceAsReader(resource);
			SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
			System.out.println("[ServicioDAO][modificarServicio] antes de realizar consulta.");
			List resultado = sqlMap.queryForList("modificarServicio", parametros);
			System.out.println("[ServicioDAO][modificarServicio] resultado : "+resultado.toString());
			int respuesta = 0;
			if (resultado != null) {
	                HashMap salida = (HashMap) resultado.get(0);
	                respuesta = (Integer)salida.get("respuesta");
			}
			System.out.println("[ServicioDAO][modificarServicio] respuesta: [["+respuesta+"]]");
			if (respuesta==1){
				return true;
			}else{
				return false;
			}
		}catch(Exception e){
			System.out.println("[ServicioDAO][modificarServicio] ERROR : "+e.getStackTrace());
			throw e;
		}		
	}
}
